/**
 * ChartData.java
 */
package com.pluginsacceptor.plugin.chart.model;

import java.util.List;

/**
 * The class describe method for storage and receiving data char
 */
public interface ChartData {

    /**
     * Change chart item
     * @param chartItem the chart item data
     * @param rowItem the row value
     * @param rowItem the column number
     * @param isUpdate <code>true</code> if data should be updated,
     * <code>false</code> if data should be added
     */
    public void changeDataItem(
        Double dataItem,
        final Integer rowItem,
        final Integer colItem,
        boolean isUpdate
    );

    /**
     * Add chart item title
     * @param rowItem the row value
     * @param isUpdate <code>true</code> if data should be updated,
     * <code>false</code> if data should be added
     */
    void changeTileItem(
        final String titleItem,
        final Integer rowItem,
        boolean isUpdate
    );

    /**
     * @param colItem the column item
     * @return <code>true</code> if title position
     */
    boolean isTitle(int colItem);

    /** Clean data */
    void clean();

    /**
     * @return the list of data for column
     */
    List<Double> getData(int columnNum);

    /**
     * @return number of columns with data
     */
    int getNumberDataColumn();

    /**
     * @return the titles
     */
    public List<String> getTitle();


    /**
     * @return affected cell numbers as string
     */
    String getAffectedCell();


    /**
     * @return list using in chart cells in communicati0n format
     */
    List<String> getUsingDataCell();

}
